iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Software Development

Python派神,大顯神威!!系列 第 15

【Day15】:實作Python爬蟲取得股價資訊(五) +日期時間處理的datetime套件

  • 分享至 

  • xImage
  •  

小小回顧一下,從第13天開始我們就引用了requests套件、第14天使用pandas資料科學套件,
試想想,如果我們剛學Python,若沒有了這些關鍵的『套件』,
每種功能都必須自己從底層刻起也將提高學習複雜度,
且,這些『等同齒輪重要的功能』似乎又曾在其他語言學習中似曾相識,
為『避免重造齒輪』Python讓你可以大量運用他人的套件來完成目前手中的專案。

而今天呢,我們需要使用的是datetime套件,
由於前面提到的都是字串為主,
就連日期參數都是字串格式,
若需要針對日期處理取判斷時就需要用到Python的datetime套件。
使用方式也只需要import進來即可「享用」,方便、省時又省力。

(一) datetime物件介紹
datetime,顧名思義,就是關於『日期時間』方面的套件。
使用尚須先將字串格式的日期轉換成datetime的datetime物件,
datetime物件可以做為日期的判斷甚至是日期的計算使用。

基本使用方式如下:

import datetime
#顯示目前系統日期
print('Date:', datetime.datetime.now().date())
#顯示目前系統時間
print('Time:', datetime.datetime.now().time())
# Output:
Date: 2022-09-30
Time: 13:50:30.593110

字串轉成datetime物件的方法:

Import datetime

#日期字串
date = ‘20220930’

#字串轉為datetime
date = strptime(date, ‘%Y%m%d’)
#使用weekday()判斷星期幾
print(date.weekday())

(二) datetime本次運用方式說明
正常狀況下由於股市周末六、日休市,因此這兩天不會有股價資訊,
所以我們的程式就需要判斷是否為周一~周五工作日,
但也有例外,就是例假日前後補班的情形,就有可能遇到周六有股價資訊,
具體的說法就是只取工作日,
來過濾掉不必上班的日期範圍(本次我們先取得一般的周一~周五工作日,其餘的補假或補班,
我們後續的實作時再用例外處理的方式)。
本次的日期範圍是: "20221003"~"20221011"
會遇到10/10補假的狀況,但本次設計暫不處理。
https://ithelp.ithome.com.tw/upload/images/20220930/20141198PyLnDQgum5.png

(三) datetime本次實作
接著開啟我們 「親愛的 Spyder」,
最好自己打字的方式來熟練Python的語法與細部狀況處理。
程式碼如下:

import datetime

#起始日期
startDate = "20221003"
#結束日期
endDate = "20221011"

startDate = datetime.datetime.strptime(startDate, '%Y%m%d')
endDate = datetime.datetime.strptime(endDate, '%Y%m%d')

# 算出起始到結束共幾天
days = (endDate - startDate).days + 1

# 建立一個list承接工作日的日期
dates = [] 

for dayNum in range(days):
    # 從起始日開始依次
    date = (startDate + datetime.timedelta(days=dayNum))
    
    #過濾掉週六、日
    if date.weekday() < 5:
        dates.append(date.strftime('%Y%m%d'))
    
print(dates)
# output
['20221003', '20221004', '20221005', '20221006', '20221007', '20221010', '20221011']

顯示的結果排除10月8日星期六、10月9日星期日,
本次暫不考慮國定假日的規則設計,
主要希望剛接觸的學習人員可以專注在datetime的功能上,
較為細部的微調我們後面的日子再來調整。

哇! ~日子過得好快已經第15天了,總算快要可以出關大吃大喝了,
哈! 在得意之前,我們明天繼續修練Python心法。


上一篇
【Day14】:實作Python爬蟲取得股價資訊(四)+ pandas資料科學套件
下一篇
【Day16】:實作Python爬蟲取得股價資訊(六) +股價資訊檔案讀取
系列文
Python派神,大顯神威!!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言